Search Results: "Antti-Juhani Kaijanaho"

4 November 2007

MJ Ray: HOWTO find my current RAM configuration and buy a cheap PC

I'm pondering adding more RAM to my workstation. 128Mb is enough for most of my work, but OpenOffice swaps a lot. I couldn't remember what RAM is currently in it (one stick or two?) so I was very happy to find dmidecode in the comments on as days pass by, by Stuart Langridge: Memory scanner for Linux. dmidecode says I have a free slot and another 512Mb stick is surprisingly cheap. Actually, whole Ubuntu-ready-to-use computers are surprisingly cheap, according to lkcl. I hope they don't contain toxic e-waste. I must be getting old. [Antti-Juhani Kaijanaho]

1 November 2007

Antti-Juhani Kaijanaho: 30

I was born on the 2nd of November in the year 1977, thirty years ago today, at 20:18 +0200. Argh. I’m scared. Does it always feel like you’re about to die? :)

27 October 2007

Antti-Juhani Kaijanaho: RFH: dctrl-tools Command-line tools to process Debian package information

I request assistance with maintaining the dctrl-tools package. There are several tasks that could use more manpower (in no particular order): Eventually I’d like to pass the package on to competent successors, but I have too much emotional attachment to the package to do that without a transitional period where I still retain a veto on what goes in the package. I also have some ideas for future tools that I’d like to be
able to concentrate on, and having co-maintainers might allow that. The package is now under Git in collab-maint. See the new README.Debian for information and a push-access code of conduct.

10 October 2007

Antti-Juhani Kaijanaho: It s time to fix the ABI

SELinux is entirely correct about disallowing dynamic code generation, as it is a major security risk. Disregarding Just-In-Time compilation, the main legitimate need for dynamic code generation is to support (downward) closures that are ABI-compatible with normal C functions. GCC’s local functions extension of C is one example, and many non-C languages need them badly in their foreign-function interfaces (Haskell is one, Ada I’m told is another). A closure is a function pointer that refers to a function that is local to another function. That function has access to the local variables of the parent function, and this access is provided by having the caller give the callee a static link (a pointer to the parent function’s stack frame) as a hidden parameter. If the call is direct (that is, not through a function pointer), the caller knows the appropriate static link and can just pass it. The trouble comes with function pointers, as we need some way of including the static link in the function pointer. The simplest way is to have function pointers be two words long; one of the words contains the classical function pointer (that is, the entry point address), and the other contains the static link. Unfortunately, the prevalent C ABIs, including the SYSV ABI used by GNU/Linux, mandate that function pointers are one word long. The only way I know to work around this is to dynamically generate, when the function pointer is created, a small snippet of code that loads the correct static link to the appropriate place and jumps to the actual code of the function, and use the address of this snippet (usually called a trampoline) as the function pointer. The snippet is generated on the stack or in the heap, and thus requires an executable stack or executable dynamic memory. It’s time to fix the ABI to allow for proper two-word function pointers.

6 October 2007

Antti-Juhani Kaijanaho: New C standard in 2012?

The C standards committee is apparently preparing to revise the C standard. The proposed C1x charter sets the goal of the committee draft’s completion in 2009, with publication of the new standard in 2012. The proposed charter adds security as a significant new goal for the standard:
Trust the programmer, as a goal, is outdated in respect to the security and safety programming communities.
The proposed charter also sets the requirement that all new features must have a history in non-experimental compilers and be in common use.

18 September 2007

Antti-Juhani Kaijanaho: Starbirds, perhaps

I decided to experiment.

13 September 2007

Antti-Juhani Kaijanaho: So THAT s how we recruit nowadays

If you know of an occasional passerby who takes the time to extract the contents of Debian source packages to see whether the RFCs are here or not, please let us know. We are always looking for new potential contributors.
Josselin Mouette :-)

11 September 2007

Antti-Juhani Kaijanaho: Never ascribe to malice what can be adequately explained by stupidity, but

Any sufficiently advanced stupidity is indistinguishable from malice.
(I have no attribution to give. Googling for it gives multiple, mutually inconsistent attributions.)

2 September 2007

Antti-Juhani Kaijanaho: A tiny program

Written to count votes with the d’Hondt method, released as a single C99 source file. I know I know, why did I write it in C? Well, because I felt like it. Now you don’t have to ask that question in my comment space in a rude manner :)

1 September 2007

Antti-Juhani Kaijanaho: Hey, I found a bug!

Bugi (In other news, I just uploaded darcs-monitor to Debian. It’s sitting waiting for NEW processing. In the meantime, you can get the package at the upstream distribution site.)

14 August 2007

Antti-Juhani Kaijanaho: Local is global

The world has many wonders. Therefore, to read a newspiece of a man who had his thumbs surgically altered to suit the iPhone better is to think, this guy is crazy. But the story in itself is plausible. Generally, stories published in a straight news category are intended to be taken seriously. There is one exception: any story published on the 1st of April may be a jest, and everybody knows it. But it is not enough, generally, that people know that the day is a jest day: a serious paper litters the April’s Fool story with blatant clues. For example, a Finnish story last April said that the principals of the story enjoyed their traditional herring in muddy water – referring to the traditional Finnish April’s Fool refrain: “April’s Fool, April’s Fool, eat herring and wash it down with muddy water!” (”Aprillia aprillia, sy silli , juo kuravett p lle!”) Perhaps the original story, published by a community newspaper, contains clues that are visible to the local readers. Perhaps there is something about the locale of the story that tells the locals that this is a false story. Or perhaps the names are ridiculous to native speakers of the American language. Certainly, the paper seems to think that the story contains sufficient clues: Careful reading of the piece makes it clear to any critical consumer of information that the piece is pure humor and not news or reported as fact, the editor claims. The original story is in the “news” category. It is written in a flip style, but then again, many “the world is crazy” style stories are. I have now read the story twice, and I find in it no clue that the story is a hoax (or satire, as the newspaper in question likes to style it). The paper made an error in judgment, that the story would only be read in the community where the story is published. They forgot that we all like to read stories of crazy people who live far away. The editor ridicules us for not noticing the satire, but the real joke is on them: they did not have the balls to acknowledge their mistake. I acknowledge mine. I was fooled. Anybody got some muddy water to spice up the herring I’m having for dinner this evening?

13 August 2007

MJ Ray: Read-Write Web Links

Here's what I wrote on other people's sites last week:
Drake.org.uk: Welcome back..
MartynD reboots his blog yet again. This time with added eyetests.
Two Questions for All Serious Free Software Contributors
I answered, as did many others.
ProBlogger Redesign - Bedding Down for the Night
Much easier-to-read, but I still had an enhancement suggestion.
Blowing bubbles niq's soapbox
Comment on house-building and house-owning in England today.
gravityboy: This Is My Good Free Software Experience
I think the GPL is useful for things other than programs and CC is confusing about DRM for everything.
Antti-Juhani Kaijanaho I am going to rank MJ Ray low from now on
Commented more on my blog, but also directly. The criticism might be fairer if the SPI ballot were secret, but it isn't.
WEBlog -- Wouter's Eclectic Blog - Voting tactics
Is this about SPI? How is IRV broken?
Constitutional amendment: reduce the length of DPL election process
Amending the amendment proposal - got enough seconds to reach the ballot, for a change.
Amendment to: reduce the length of DPL election process
This one doesn't look like it will get onto the ballot. Informative subthread on combination of amendments.
Here's some of what I read last week:
talks with Linus Torvalds
He's much ruder than I am, but can get away with it because he's done more.
The Most Excellent and Lamentable Tragedy of Richard Stallman - Edward O'Connor
He's much ruder than I am, but doesn't get away with it because he's done more.
Mayor wants London to copy Paris bike rentals News This is London
I saw those bikes in Paris. Seemed like a good idea.
Parisian-style hire bicycles to beat London traffic jams - Independent Online Edition > Transport
Slightly inaccurate report.
Hacking gadflies: Open Document Format
It's almost September again.
dgh: Bike power
Interesting idea.
apenwarr's log
quite a funny letter to google
Bristol Climate Protesters En-Route to Camp
My legs hurt after cycling only 6 miles yesterday. Not sure what I did wrong.
The Weston Mercury - Call to 'have a say' on the future of Britain
Pensioners to save country. Or not.
BBC NEWS Technology UN's website breached by hackers
Can't be bothered to check netcraft.
Little's Log: North Norfolk Councillor defects to UKIP
Little's still raging against the media.

8 August 2007

MJ Ray: SPI Elections: Corrections

Well, yesterday I asked
"WTF? There seem to be some 30 or 40 voters who really dislike me, but didn't tell me that straight, preferring to be silent then vote me down. Are you cowards, or what?"
Not the most polite of questions(!), but it's what I was wondering at the time. I had some good replies in the comments and a reply by Pingback that I didn't like, but it turned out to be a very educational reply in the end. A comment from Filipus Klutiero included:
"Sometimes, it's not really possible to explain a bad opinion of someone, because we forget the reasons for that opinion. However, if you think that voting based on reputation is a bad idea, you probably can't understand these "cowards"."
I've mentioned before that I don't seem to fit the debian developers stereotype, so I guess it's not surprising if I don't understand them sometimes. If reputation is always going to be such a big factor, one problem I need to overcome in debian and SPI is that some other participants do make crap up about me. You can usually spot it by phrases like "seems to think" (there are not that many mind-readers out there), but eventually, mud sticks. How to overcome this? Patiently post corrections, or is that futile? Here are posts from Andrew Pollock and Matt Palmer which I think are wrong on several points:- First off, I haven't decided to call anyone cowards - it was a question, albeit a bit "nasty, british and short". The underlying sentiment was continued disappointment and puzzlement at why voters behave like that in a non-secret vote, not rage. It was not really an "outburst," coming a week after the results. I'm not unhappy with the results - I've congratulated the winners by several methods, including the last post, although I mentioned my mixed feelings. Isn't that usual? I think very few non-elected candidates express unbridled joy about the experience. After all, it's not an easy decision to stand, but I did it for two main reasons: shortage of other candidates I really liked, at the time I chose to stand (as I mentioned in my platform); and for practical experience of how Condorcet behaves. I'm not rabid - I've even written against the Rabid Right recently - and I'm not rabidly anti-Google. I had polite chats with various people from Sun, Microsoft and Google at debconf - I don't like those companies, but I don't feel a need to tell their workers that at every point. I think reasons to like and dislike Sun and Microsoft are old and well-known, but a few years ago, I got so bored of explaining why I don't agree that Google is God's Gift to our communities that I posted a FAQ-ish page about it, which I update as I look at its new developments. Let's politely disagree, until Google fix the bugs which brought me to that view. Andrew Pollock's point about debian-legal is vague and maybe fair comment. It's not often a fun or popular thing. But "precious ego"? Ha! Yes, a guy who humiliates himself with cheap stunts for environmental protests is clearly very precious about his ego(!) (Sorry if that's rude, but I find it hilarious.) I don't mind people having different opinions, but it would be nice if their opinions about me were mostly based on reality, instead of misunderstandings. One fair point from Matt Palmer's post and also, I discovered eventually, from Antti-Juhani Kaijanaho's site, is that SPI's elections apparently are meant to be secret, as far as I can tell from the starts of Article Five and Article Seven of the SPI by-laws. I tend to value practice more than theory and the current voting practice is merely confidential, not secret. I think that's part of why I didn't understand the approach taken by some voters - they were treating it as a secret ballot. That's fine and now that I realise it's meant to be secret, I've suggested making it a secret ballot. (2007-08-08: 1 comment)

7 August 2007

Antti-Juhani Kaijanaho: I am going to rank MJ Ray low from now on

MJ Ray writes:
There seem to be some 30 or 40 voters who really dislike me, but didn’t tell me that straight, preferring to be silent then vote me down. Are you cowards, or what?
This displays such an antipathy against secret ballots (which protect voters from social pressure, not to mention coercion of various degrees of severity) that I now consider MJ Ray an unacceptable candidate in any future election where I am enfranchised. By the way, since the election MJ Ray discusses had no None Of The Above option, there is no way to determine if his low rankings were due to dislike or just that there were better candidates. Added later on the same day:
MJR has responded to this post; his response is linked and reproduced in the comments section. MJR seems to have missed the subtle hint that his cowardice statement is a form of social pressure itself. In fact, he continues and elevates the pressure in his response, implying that if one is afraid of him, one should not vote (presumably, at least not ranking him low). That these statements are given after the vote has closed is a mitigating factor, but it does not absolve him, as the statements are applicable to any future elections where he is a candidate. I m now even more convinced that MJR belongs in the bottom of any ranked vote from me.

28 June 2007

Antti-Juhani Kaijanaho: The Dying Philosophers Problem

Reading a masters thesis draft that mentions the dining philosophers problem – a parable about the difficulties of process synchronization very well known in computer science – it occurred to me that it must not be a very good idea to eat just spaghetti (or just rice). I asked a nutritionist about it, and here is her answer. Even if they manage to avoid deadlock or livelock, dying of malnutrition is not going to be their first problem, go read the full story! [Typos and thinkos corrected after initial publication]

26 June 2007

Antti-Juhani Kaijanaho: Tux Games is a spammer

I received some time ago (don’t remember exactly when, I’ve since deleted that mail) a mail from Tux Games informing me that a mail that I (supposedly) had sent them is being held pending my confirmation that the message is not spam. Now, I have never ever before heard of Tux Games, so it seems likely that the message being held indeed is spam – and was not, in fact, sent by me. Email source forgery is trivial if you know how the system works, and spammers routinely forge email sender information. Tux Games is itself engaging in spamming by sending unsolicited confirmation mails to people. I replied to the mail saying so, and asking them to stop doing this. The message bounced. Today, I received another message from Tux Games. The original message is still in the queue, and has not been read by a human. I am asked to confirm it is not spam. It is tempting to do so.

12 June 2007

Antti-Juhani Kaijanaho: Benja on denotational semantics

My friend Benja Fallenstein got carried away in the comment section of my latest post on recursion and wrote a tutorial on how it all relates to denotational semantics. It’s a shame it is buried somewhere in the comments, so I am reposting the comment here with Benja’s permission. The tagline is, Denotational semantics tutorials. It s the new monad tutorials!
Benja Fallenstein writes: Having read and understood [the] entire post, I can now summarize Antti-Juhani s complaint in a way that programmers with no theoretical background will understand: The definition is an infinite recursion. Sure, it s self-referential, but since it recurses forever, it doesn t actually define what recursion is! :-) That said, I find it kind of a pity to introduce all this theory without talking about why it nicely models the real world. Antti-Juhani argues that this pretty much the definition of popularized science, but I have to admit that, as definitions go, I like recursion: see recursion better. :) So let me have a quick go. [UPDATE: Didn t turn out to be quick at all. This is, in fact, as long as Antti-Juhani s original post. Proceed at your own peril.] All of this comes from denotational semantics, which is concerned with what expressions in a programming language mean and which ones mean the same thing. For example, 7 denotes the number seven, 7+2 denotes the number nine, and 5+4 also denotes the number nine. Now, here s the knotty problem. If we have f(x) = if x = 0 then 1 else x*f(x-1) then f(4) denotes the number twenty-four, but what does f(-2) denote? So, denotational semantics introduces a new, special value, recurses forever. An expression of type integer either denotes an integer, or, like f(-2), it denotes recurses forever. Now, about these partial orders. (Reminder: A partial order says, for every pair (x,y) of elements of a certain set, that x is smaller than y, equal to y, larger than y, or incomparable to y.) Here is Benja s guide to what the partial orders of denotational semantics mean: Let s say that you write a program where, in one place, you can plug in either x or y. If you can write such a program that prints foo when you plug in x and prints bar when plug in y, then x and y are incomparable. If you can t do that, but you can write a program that prints foo when you plug in y, and recurses forever when you plug in x, then x is smaller than y. If every program you can write will do the same thing whether you plug in x or y, then x and y are equal. (We ignore details like out-of-memory errors and *how long* a program takes to do something.) Examples: - 5 and 7 are incomparable. Proof: if ___ == 5 then print foo else print bar . - f(-2) f(2). Proof: if ___ == 2 then print foo else print foo if you plug in f(-2), this will loop forever, if you plug in f(2), it ll print foo . - (5+2) = 7. Whatever program I write, it will do the same thing, no matter which of these expressions I plug in. Now, with expressions of type integer, the resulting partial order is: Recurses forever is smaller than everything else. All other values are incomparable. Recall from Antti-Juhani s post that the bottom element ( ) is defined to be the smallest element of a mathematical universe (if such a beast exists). Since recurses forever is smaller than everything else, it s the bottom element of this universe. That s what denotational semantics calls it. (Haskell, too.) Of course, this partial order is kind of boring (the technical term is flat ). It gets more interesting when we consider functions. In general, we can talk about functions from values of type S to values of type T, where we already know the partial orders of S and T. In particular, we can talk about functions from integers to integers. Now, if you can find an x and a program that prints foo when you plug in f(x) and bar if you plug in g(x), then you can write a program that prints foo when you plug in f, and bar when you plug in g. (Exercise! ;-) ) Further, denotational semantics wants applying a function to a parameter and then doing something with the result to be the *only* way you can get information about a function. No f.get_function_name, please. (If your programming language has that, you can t map the functions of your programming language 1:1 to the functions of denotational semantics.) By my rule above, this implies that f = g if and only if f(x) = g(x) for all x. Since formal theories can t have fuzzy stuff like my rule, denotational semantics takes this as the *definition* of the partial order on functions. The bottom element of this mathematical universe, then, is the function that always returns bottom, no matter what it is given or in other words, a function that recurses forever, no matter what parameter you pass to it. (Side note. Denotational semantics allows only monotone functions that is, if x = y, then f(x) = f(y) for all f, x, and y. That s an example of how all these definitions allow us to make formal statements about the real world. In the real world, if you can find a function f and a program that prints foo when given f(x) and bar when given f(y), then you have a program that prints foo when given x and bar when given y so if f(x) and f(y) are incomparable, then x and y must be incomparable, and the other way around, if x and y are comparable, then f(x) and f(y) must be comparable, too. (This reasoning doesn t exclude the case that x = y and f(x) >= f(y). If you really care, prove it yourself. :) ) This ends the side note.) Recall, now, Antti-Juhani s definition of recursion: An equation of the form x = some expression (which may contain x), interpreted as a recursive definition, defines x to be the smallest value satisfying this equation. The models constructed in denotational semantics have the property that for any equation of this form, the set of values satisfying it does have a smallest element, so x is well-defined no matter what the equation is. It s important to note that this does not mean that x has to be bottom, because there are equations to which bottom is not a solution. Let s look at a slightly simpler example than the one Antti-Juhani gave. f(x) = if x = 0 then 0 else f(x-1) We have f(0) = 1, but bottom(0) = bottom, so f can t be bottom. The equation has more than one solution, though. It is satisfied by a function that returns 0 for x >= 0 and returns bottom (recurses forever) for x 0; but it is also satisfied by a function that returns 0 for every input. And by an infinite number of functions that return 0 for some negative inputs and bottom for others. We want the first of these solutions, of course, because that s what we get if we interpret the equation as a computer program, and computer programs are what we re trying to model. But we re in luck: The first solution is smaller than all the other ones, because for all inputs, they either return the same value, or the solution we want returns bottom and the solution we don t want returns 0 (and bottom 0). The point of it all is, of course, that when we interpret an equation as a computer program, we always get the least value satisfying the equation (if we use a partial order that follows my rule, above). And that, my friend, is denotational semantics.

Antti-Juhani Kaijanaho: On recursion

Note: This entry has been edited a couple of times (and might be edited in the future) to remove errors. Thanks to Benja Fallenstein for critique. My previous post about recursion drew some comments. This is a topic that frequently confuses me, and there is a lot of confusion (some of it mine) in the blog post and its comments. On reflection, it seems prudent to examine what recursion really is. Consider the following recursive definition: 0 is an expression; if T is an expression, then sT is an expression; nothing is an expression that doesn’t have one of these two forms. Now, it is clear that 0 is an expression. It is equally clear that sssssK is not an expression. In some applications, it makes sense to consider infinite expressions like “…ssssss0“; that is, an infinite number of ss before the final 0, and in others it doesn’t. Is that infinite utterance and expression? It does have one of the forms given in the definitions, so it is not forbidden from being an expression, but neither is there anything in the definition requiring that it is. It is helpful to do this a bit more formally. Let us translate the self-referential definition into a set equation: The set of expressions is the set E that satisfies the equation

E = 0se e ∈ E

But this definition is bogus! There are more than one set E that satisfies the equation, as remarked above, and thus there is no “the set E”! We need to fix the definition in a way that makes the set E unique. The key question is, do we want to regard the infinite utterance discussed above as an expression. It is simplest to just say “the set of expressions is the smallest set E that …” if we want it to not be an expression, and if we want it to be an expression we should say “the set of expressions is the largest set E that …” Let us make the following definitions:
Consider the set equation S = … S …, in which the set S is alone on the left-hand side and occurs at least once on the right-hand side. This equation is a recursive definition of the smallest set S satisfying this equation, and a corecursive definition of the largest set S satisfying this equation.
Thus, a definition like

E = 0se e ∈ E

is not recursive because of its form; it is self-referential. By itself, it is an ambiguous and thus bogus definition. We use the words “recursive” and “corecursive” to indicate the intended method of disambiguation. A rather nice example of this can be seen in the treatment of algebraic data types in strict (ML-style) and nonstrict (Haskell-style) functional programming languages. Consider the declaration (using Haskell syntax)
data IntList = Nil   Cons Int IntList
This can be read as a set equation as follows:

IntList = Nil ∪ Cons n x n ∈ Int ∧ x ∈ IntList

Now, as a recursive definition, it is restricted to finite lists as found in ML, but as a corecursive definition, it also allows infinite lists as found in Haskell. (It unfortunately fails to address the question of bottom-terminated lists, which also can be found in Haskell.) As it happens, the technique is not limited to set definitions; but to generalise it, we need to discuss a bit what we mean by the terms “smallest” and “largest”. In a set context, a set is smaller than another set if it is the other’s subset. Notice how this makes the ordering partial, that is, there are sets that are not comparable (for example 1 and 2 ; neither is smaller than the other, but neither are they equal). A collection of sets does not necessarily have a “smallest” set (that is, one of the sets that is a subset of all the others). However, we can always find the lowest upper bound (”lub” or “join”) of a collection of sets as the union of the sets, and the greatest lower bound (”glb” or “meet”) as the intersection of the sets, and if the lub or glb is itself a member of the collection, it is the smallest or largest set of the collection. Haskellists will find things instantly familiar when I say that the smallest element of a mathematical universe (if it exists) is called bottom and is denoted by ⊥; somewhat less familiar will be that the greatest element (if it exists) is called top and is denoted by ⊤. A partial function is any function that needs not be defined everywhere. For example, f(x) = 1/x is a partial function on the reals (it is not defined for x = 0). We can form a partial ordering of (partial) functions having the same domain and codomain by specifying that f is smaller than g if f(x) = g(x) for all such x that f(x) is defined. Sometimes it will make sense to specify that f is smaller than g if f(x) is smaller than g(x) for all such x that f(x) is defined. Now, it happens that all collections of functions have a lub; and in particular, the partial function that is defined nowhere is the smallest function (the bottom function). Now, with this definition of “ordering” of functions we can apply the definitions of recursion and corecursion to functions. For example, consider f(x) = f(x) + 1. The bottom function (defined nowhere) qualifies, since undefined + 1 is undefined; thus it is the smallest solution to the equation and thus this equation is a recursive definition of bottom. However, consider f(x) = if x = 0 then 1 else x*f(x-1): any solution to this equation must have f(0) = 1 and thus the bottom function is disqualified. In fact, the smallest solution is the factorial function, and thus the equation is a recursive definition of factorial. In the comments to my previous entry, I was asked whether the Haskell definition “ones = 1 : ones” is recursive. Of course, the question in itself is nonsensical; whether it is a recursive definition or something else (such as corecursive) depends on what the programmer intends. I will interpret this question as whether the equation is a recursive definition of the intended result, the infinite list of all ones. First, observe that we can order Haskell lists (including the special “undefined” list) partially as follows: l1 is smaller than l2 if l1 is undefined, if they both are empty lists or if a) the first element of l1 is smaller than the first element of l2 and b) the tail (the list with the first element removed) of l1 is smaller than the tail of l2. The undefined list does not qualify as a solution for “ones = 1 : ones”. No finite list qualifies either. The infinite list of all ones does qualify, and it is the only solution; hence, the equation is a recursive definition of the infinite list of all ones; it is also a corecursive definition of the same list. Finally, let us consider the question that started it all: what should we make of the definition “recursion: see recursion”. First, note that a equation x = x admits all elements of the universe as a solution; hence, the proper reading of “recursion: see recursion” as a definition is that it is ambiguous and hence bad. It is a recursive definition of the bottom element of the universe (whatever that might be for a dictionary), and a corecursive definition of the top element of the universe (whatever that might be). In any case, it does not define recursion (unless of course, the concept of recursion is the smallest or the largest concept in the universe of concepts).

11 June 2007

MJ Ray: Stopping the Nixforce.com Sploggers

I asked: Should we try to stop them, or just post that "Nixforce look like an unscrupulous load of swines trying to trade on Debian Developer names without permission" all over their site? Paul wrote:
"They are violating Google's Adsense policies by inviting people to click on their ads on their front page ("If you dont want to enter, at least go to one of our Advertisers below"). You could, at the very least, have this line of their income terminated by reporting them here "
Works for me. It said they'll respond within 24 hours. Brandon Holtsclaw suggested:
"Or set something to look for the referer pulling the feed and redirect just that nixforce domain to a 404 or some nasty pr0n feed :) just a thought."
I would, but I think most things will fail to pull if I send a 40x and I can't think how to do a redirect or proxy neatly without messing with RewriteRule or similar - nixforce aren't worth messing with RewriteRules. I also suspect they're pulling from Planet Debian, rather than my web host, so if I made a mistake, I'd be very unpopular. Also: Russell Coker and Antti-Juhani Kaijanaho

Russell Coker: Nixforce unauthorised use

Just over two days ago I sent a DMCA take-down request to nixforce.com for copying my content in violation of the non-commercial license that I offer, I have not had a response from them and they have kept mirroring my site. I have just sent a DMCA take-down to tierzero.net which appears to be their ISP. The email address listed in the whois record for that ISP bounces as does the postmaster address. It seems that I’m not the only person with this problem, Antti-Juhani Kaijanaho is also having problems with them. Any suggestions on how to deal with them would be appreciated. One possibility that I will eventually persue is to file a DMCA request with Google, this can result in their Google Adwords account being terminated.

Next.

Previous.